/**
 * RSS阅读器应用的类型定义
 * 包含RSS源、文章、分类等核心数据结构
 */

/**
 * RSS源接口定义
 * @interface RSSFeed
 */
export interface RSSFeed {
  /** RSS源唯一标识符 */
  id: string;
  /** RSS源标题 */
  title: string;
  /** RSS源URL地址 */
  url: string;
  /** RSS源描述 */
  description?: string;
  /** RSS源网站链接 */
  link?: string;
  /** RSS源图标URL */
  favicon?: string;
  /** 所属分类ID */
  categoryId?: string;
  /** 是否启用 */
  isActive: boolean;
  /** 创建时间 */
  createdAt: Date;
  /** 最后更新时间 */
  updatedAt: Date;
  /** 最后同步时间 */
  lastSyncAt?: Date;
  /** 文章总数 */
  articleCount: number;
  /** 未读文章数 */
  unreadCount: number;
}

/**
 * 文章接口定义
 * @interface Article
 */
export interface Article {
  /** 文章唯一标识符 */
  id: string;
  /** 文章标题 */
  title: string;
  /** 文章链接 */
  link: string;
  /** 文章摘要 */
  summary?: string;
  /** 文章内容 */
  content?: string;
  /** 文章作者 */
  author?: string;
  /** 发布时间 */
  publishedAt: Date;
  /** 所属RSS源ID */
  feedId: string;
  /** 是否已读 */
  isRead: boolean;
  /** 是否收藏 */
  isFavorite: boolean;
  /** 文章标签 */
  tags?: string[];
  /** 文章图片URL */
  imageUrl?: string;
  /** 创建时间 */
  createdAt: Date;
}

/**
 * RSS源分类接口定义
 * @interface Category
 */
export interface Category {
  /** 分类唯一标识符 */
  id: string;
  /** 分类名称 */
  name: string;
  /** 分类颜色 */
  color: string;
  /** 分类图标 */
  icon?: string;
  /** 排序顺序 */
  order: number;
  /** 创建时间 */
  createdAt: Date;
  /** RSS源数量 */
  feedCount: number;
}

/**
 * 用户设置接口定义
 * @interface UserSettings
 */
export interface UserSettings {
  /** 主题模式 */
  theme: 'light' | 'dark' | 'auto';
  /** 语言设置 */
  language: string;
  /** 是否启用自动刷新 */
  autoRefresh: boolean;
  /** 自动刷新间隔（分钟） */
  refreshInterval: number;
  /** 是否启用通知 */
  notificationsEnabled: boolean;
  /** 是否只显示未读文章 */
  showUnreadOnly: boolean;
  /** 每页文章数 */
  articlesPerPage: number;
  /** 默认视图模式 */
  defaultView: 'list' | 'card' | 'magazine';
  /** 字体大小 */
  fontSize: 'small' | 'medium' | 'large' | 'extra-large';
  /** 阅读模式 */
  readingMode: 'comfortable' | 'compact' | 'spacious';
  /** 滚动时标记为已读 */
  markAsReadOnScroll: boolean;
  /** 在新标签页打开链接 */
  openLinksInNewTab: boolean;
  /** 启用键盘快捷键 */
  enableKeyboardShortcuts: boolean;
  /** 紧凑模式 */
  compactMode: boolean;
  /** 显示图片 */
  showImages: boolean;
  /** 启用深色模式 */
  enableDarkMode: boolean;
  /** 自动标记为已读 */
  autoMarkAsRead: boolean;
  /** 同步设置 */
  syncSettings: boolean;
}

/**
 * 搜索过滤器接口定义
 * @interface SearchFilter
 */
export interface SearchFilter {
  /** 搜索关键词 */
  keyword?: string;
  /** 选中的RSS源ID列表 */
  feedIds?: string[];
  /** 选中的分类ID列表 */
  categoryIds?: string[];
  /** 是否只显示未读 */
  unreadOnly?: boolean;
  /** 是否只显示收藏 */
  favoriteOnly?: boolean;
  /** 开始日期 */
  startDate?: Date;
  /** 结束日期 */
  endDate?: Date;
  /** 排序方式 */
  sortBy: 'publishedAt' | 'createdAt' | 'title';
  /** 排序顺序 */
  sortOrder: 'asc' | 'desc';
}

/**
 * API响应接口定义
 * @interface ApiResponse
 */
export interface ApiResponse<T = any> {
  /** 响应状态码 */
  code: number;
  /** 响应消息 */
  message: string;
  /** 响应数据 */
  data?: T;
  /** 是否成功 */
  success: boolean;
}

/**
 * 分页参数接口定义
 * @interface PaginationParams
 */
export interface PaginationParams {
  /** 当前页码 */
  page: number;
  /** 每页数量 */
  pageSize: number;
}

/**
 * 分页响应接口定义
 * @interface PaginationResponse
 */
export interface PaginationResponse<T = any> {
  /** 数据列表 */
  items: T[];
  /** 总数量 */
  total: number;
  /** 当前页码 */
  page: number;
  /** 每页数量 */
  pageSize: number;
  /** 总页数 */
  totalPages: number;
  /** 是否有下一页 */
  hasNext: boolean;
  /** 是否有上一页 */
  hasPrev: boolean;
}